/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.pw.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.DecoratedStackPanel;
/**
 *
 * @author leandro
 */
public class NuevoCliente {
    /**
     * Referencia constante llamada txtNombre que apunta a un cuadro de texto.
     * Cada objeto de la clase InterfazEntryPoint contiene una referencia
     * txtNombre. Estos cuadros de texto leen datos
     * <code>String</code>. Para otros tipos de datos se pueden usar
     * <code>DoubleBox</code>,
     * <code>IntegerBox</code>,
     * <code>LongBox</code> y
     * <code>DateBox</code>.
     */
    private final TextBox txtNombre = new TextBox();

    {
// Muestra aproximadamente 10 carácteres.
        txtNombre.setVisibleLength(10);
    }
    private final VerticalPanel distribucion = new VerticalPanel();
    private final TextBox txtApellido = new TextBox();
    private final TextBox txtDocumento = new TextBox();
    private final TextBox txtTelefono = new TextBox();
    /**
     * Referencia constante llamada btnSaludo que apunta a un botón cuyo texto
     * es "Saludo". El segundo parámetro del constructor conecta con el objeto
     * que recibe los eventos cada vez que se hace clic en el botón.
     */
    private final Button btnSaludo = new Button("Procesar", new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            procesa();
        }
    });

    /**
     * Se ejecuta cada vez que se construye una instancia de InterfazEntryPoint.
     */
    public NuevoCliente() {
        
// coloca el texto "Nombre:"
        distribucion.add(new InlineLabel("Nombre:"));
// coloca txtNombre.
        distribucion.add(txtNombre);
        
        distribucion.add(new InlineLabel("Apellido:"));
        distribucion.add(txtApellido);
        
        distribucion.add(new InlineLabel("Documento:"));
        distribucion.add(txtDocumento);
        
        distribucion.add(new InlineLabel("Telefono:"));
        distribucion.add(txtTelefono);
// coloca btnSaludo.
        distribucion.add(btnSaludo);
        /* Asigna a distribución como el componente raíz del
         * Composite. */        
    }

    /**
     * Método invocado cada vez que se hace clic en btnSaludo.
     */
    public void procesa() {
        /* getText() Devuelve el texto capturado en txtNombre.
         * trim()
         Elimina los espacios en blanco al inicio y al final de un texto.
         * Todos los cuadros de texto, incluido TextBox pueden usar el método "getValue()"
         * para recuperar un valor del tipo queindica su nombre; por ejemplo, "LongBox"
         * devuelve "Long". */
        final String nombre = txtNombre.getText().trim();
        final String apellido = txtApellido.getText().trim();
        final String documento = txtDocumento.getText().trim();
        final String telefono = txtTelefono.getText().trim();
// Obtiene un saludo al concatenar estos dos textos.
        final String saludo = "Datos recibidos\n" + nombre +"\n"+ apellido +"\n"+ documento +"\n"+ telefono;
// Cambia el texto de txtSaludo.
        Window.alert(saludo);
    }    

    public VerticalPanel getDistribucion() {
        return distribucion;
    }
    
}
